package sudoku;

public class SudokuController {
    private final SudokuModel model;
    private SudokuView view;
    private final SudokuAI ai; //

    public SudokuController(SudokuModel model) {
        this.model = model;
        this.ai = new SudokuAI(); // 初始化 AI 实例
    }

    public void setView(SudokuView view) {
        this.view = view;
    }

    public void makeMove(int row, int col, int num) {
        if (model.isRightAnswer(row, col, num)) {
            model.makeMove(row, col, num); // 修改用户填写的网格
            model.setBadMove(false);
        } else {
            model.setBadMove(true);
        }
        view.updateUI(); // 通知View更新界面
        if (model.isSolved()) {
            view.showGameOverMessage(); // 游戏完成时显示提示
        }
    }

    public void selectCell(int row, int col) {
        model.selectCell(row, col);
        model.setBadMove(false);
        view.updateUI(); // 通知View更新界面
    }

    public void generatePuzzle(int holes) {
        ai.resetGrids();
        model.generatePuzzle(holes); // 调用 Model 生成题目
        view.updateUI(); // 通知 View 更新界面
    }

    public int getAnswer() {
        return ai.getAnswer(); // 提供接口供 View 调用 AI 解决方案
    }

    public int aiSolve(int[][] userGrid) {
        return ai.solve(userGrid); // 提供接口供 View 调用 AI 解决方案
    }

    public boolean[][] getAILightGrid() {
        return ai.getLightGrid(); // 提供接口获取 AI 的高亮网格
    }

    public boolean[][] getAISameNumGrid() {
        return ai.getSameNumGrid(); // 提供接口获取 AI 的相同数字网格
    }

    public void resetAIGrids() {
        ai.resetGrids(); // 提供接口重置 AI 的网格
    }
}